@echo off
setlocal enabledelayedexpansion
chcp 65001 > nul
cd /d "%~dp0"

title 群友市场更新程序

echo =================================
echo        群友市场 更新程序
echo =================================
echo.

REM 检查Git是否安装
where git >nul 2>&1 || (
    echo [ERROR] 未检测到Git，请先安装Git
    echo 下载地址: https://git-scm.com/downloads
    echo 按任意键打开下载页面...
    start "" "https://git-scm.com/downloads"
    pause >nul
    exit /b 1
)

REM 检查是否是Git仓库
if not exist ".git" (
    echo [ERROR] 当前目录不是Git仓库
    echo 正在尝试初始化...
    git init
    git remote add origin https://gitee.com/Tloml-Starry/Slave-Market.git
    git fetch origin
    git checkout -b master origin/master || (
        echo [ERROR] 初始化失败
        pause
        exit /b 1
    )
)

REM 直接使用master分支
set "BRANCH=master"

REM 检查工作区状态
set HAS_MODIFIED=0
set HAS_UNTRACKED=0
for /f "tokens=1,2" %%a in ('git status --porcelain') do (
    REM 检测工作区修改（第二个字符）
    if "%%b"=="M" set HAS_MODIFIED=1
    REM 检测未跟踪文件
    if "%%a"=="??" set HAS_UNTRACKED=1
)

if !HAS_MODIFIED!==1 (
    echo [警告] 检测到未提交的工作区修改：
    echo.
    git diff --name-only
    echo.
    echo 这些修改可能在更新时被覆盖！建议提交或储藏更改。
    echo.
    choice /c YN /n /m "是否继续更新？(Y/N)"
    if errorlevel 2 (
        echo 更新已取消。
        pause
        exit /b 0
    )
)

if !HAS_UNTRACKED!==1 (
    echo [警告] 存在未跟踪文件，建议清理或添加到.gitignore
    echo.
)

REM 获取远程更新
echo 正在同步远程仓库...
git fetch origin || (
    echo [ERROR] 远程仓库同步失败
    pause
    exit /b 1
)

REM 比较提交差异
git rev-list HEAD..origin/%BRANCH% --count > "%temp%\update_commits.tmp"
set /p COMMITS=<"%temp%\update_commits.tmp"
del "%temp%\update_commits.tmp" >nul 2>&1

if %COMMITS% EQU 0 (
    echo.
    echo [提示] 当前已是最新版本
    pause
    exit /b 0
)

echo.
echo 发现 %COMMITS% 条新提交，更新内容如下：
echo ---------------------------------
git log --pretty=format:"%%h - %%s (%%%%cr)" HEAD..origin/%BRANCH%
echo ---------------------------------

REM 执行更新
echo.
echo 正在应用更新...
git pull origin %BRANCH% --ff-only || (
    echo [ERROR] 更新失败！可能原因：
    echo 1. 存在冲突需要手动解决
    echo 2. 网络连接异常
    echo 3. 文件被其他程序占用
    echo.
    pause
    exit /b 1
)

REM 后置检查
git status --porcelain | findstr "^ M" >nul && (
    echo [警告] 更新后检测到新的未提交修改
)

echo.
echo =================================
echo        更新成功完成！
echo =================================
echo.
echo 按任意键退出...
pause >nul
exit /b 0